package com.qd.panda.mapper.card;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.qd.common.panda.domain.entity.card.CardInfoDetailDTO;
import com.qd.common.panda.domain.entity.card.redeemcode.CardRedeemCodeDTO;
import com.qd.common.panda.domain.entity.card.redeemcode.PlanRedeemCodeDetailDTO;
import com.qd.panda.model.CardInfoDetail;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 卡卷明细
 *
 * @author sjk
 */
public interface CardInfoDetailMapper extends BaseMapper<CardInfoDetail> {
    /**
     * 分页
     *
     * @param page  分页属性
     * @param query 查询条件
     * @return 数据
     */
    IPage<CardInfoDetailDTO> page(IPage<CardInfoDetail> page, @Param(Constants.WRAPPER) Wrapper<CardInfoDetail> query);

    /**
     * 兑换明细列表
     * @param page 分页属性
     * @param query 查询条件
     * @param type 1查询已兑换 2查询已使用
     * @return 数据
     */
    IPage<PlanRedeemCodeDetailDTO> exchangeRedeemCodeDetailPage(IPage<PlanRedeemCodeDetailDTO> page, @Param(Constants.WRAPPER) Wrapper<CardInfoDetail> query,@Param("type") Integer type);
    /**
     * 使用明细列表
     * @param page 分页属性
     * @param query 查询条件
     * @param type 1查询已兑换 2查询已使用
     * @return 数据
     */
    IPage<PlanRedeemCodeDetailDTO> useRedeemCodeDetailPage(IPage<PlanRedeemCodeDetailDTO> page, @Param(Constants.WRAPPER) Wrapper<CardInfoDetail> query,@Param("type") Integer type);

    /**
     * 查询已经过期的数据
     * @param useEndTime 时间
     * @return id集合
     */
    List<CardInfoDetailDTO> overdueList(@Param("useEndTime") LocalDate useEndTime);

    /**
     * 统计
     * @param planId 计划ID
     * @return 数量
     */
    List<CardRedeemCodeDTO> useRedeemCode(@Param("planId") String planId);

}